
const Calculate = {
	// 获取扫码参数
	getQueryVariable(query, variable) {
		var vars = query.split("&");
		for (var i = 0; i < vars.length; i++) {
			var pair = vars[i].split("=");
			if (pair[0] == variable) {
				return pair[1];
			}
		}
		return (false);
	},
	// 判断是否在围栏内
	isPointInPolygon(point, points) {
		points=JSON.parse(points)
	    const lng = point[0]
	    const lat = point[1]
	    let iSum = 0
	    let dLon1, dLon2, dLat1, dLat2, dLon
	    if (points.length < 3) return false
	    const iCount = points.length
	    for (let i = 0; i < iCount; i++) {
	      if (i === iCount - 1) {
	        dLon1 = points[i][0]
	        dLat1 = points[i][1]
	        dLon2 = points[0][0]
	        dLat2 = points[0][1]
	      } else {
	        dLon1 = points[i][0]
	        dLat1 = points[i][1]
	        dLon2 = points[i + 1][0]
	        dLat2 = points[i + 1][1]
	      }
	      // 以下语句判断A点是否在边的两端点的水平平行线之间，在则可能有交点，开始判断交点是否在左射线上
	      if (((lat >= dLat1) && (lat < dLat2)) || ((lat >= dLat2) && (lat < dLat1))) {
	        if (Math.abs(dLat1 - dLat2) > 0) {
	          // 得到 A点向左射线与边的交点的x坐标：
	          dLon = dLon1 - ((dLon1 - dLon2) * (dLat1 - lat)) / (dLat1 - dLat2)
	          if (dLon < lng) { iSum++ }
	        }
	      }
	    }
	    if (iSum % 2 !== 0) return true
	    else return false
	  },
				
	// 将对象转换为查询字符串
	  objToParams(obj) {
	    let query = '?'
	    for (const key in obj) {
	      let val = obj[key]
	      if (val === undefined) continue
	      if (typeof val === 'object') {
	        val = JSON.stringify(val)
	      }
	      val = encodeURIComponent(val) // 这里必须通过 encodeURIComponent 转义，比如 '1%'，如果不转义后台处理处理时会报错
	      query += key + '=' + val + '&'
	    }
	    return query.slice(0, -1)
	  },
	// 判断身份证号是否合法
	// 身份证号是否正确
	isCard(Card, flag = false) {
		//  查询输入日期是否有效
		//  1.查看isCard是不是数字类型的。如果是数字类型，就转为字符串。
		let newVar = typeof Card;
		// console.log(newVar);
		if (newVar == "number") {
			//    是数字，就转
			Card = Card.toString();
		}

		//判断身份证的位数
		if (Card.length !== 18) {
			console.log("请检查身份证的位数,本函数只支持18位身份证");
			return false;

		}
		//  1.把年月日剥离出来
		const year = Card.slice(6, 10);
		// console.log(year);
		const month = Card.slice(10, 12);
		// console.log(month);
		const day = Card.slice(12, 14);
		const s = Card.slice(17);
		// console.log(s);
		// console.log(day);
		//2.定义月份的字典;
		const set = new Set().add('01').add('02').add('03').add('04').add('05').add('06').add('07').add('08').add(
			'09').add('10').add('11').add('12');;
		// console.log(set);
		//3.判断月份是否不在0-12的范围内
		if (!set.has(month)) {
			//说明没有这个月份
			console.log("月份不在范围内");
			return false;
		} else {
			//  4.说明月份输入是正确的，那么按照1,3,5,7,8,10，12的口诀，判断他们的天数
			if (month == '01' || month == '03' || month == '05' || month == '07' || month == '08' || month ==
				'10' || month == '12') {
				if (day > 31) {
					console.log("该月份只有31天！！");
					return false;
				}
			} else if (month == '04' || month == '06' || month == '09' || month == '11') {
				if (day > 30) {
					console.log("该月份只有30天");
					return false;
				}
			} else {
				//  5.特殊的2月，要判断他是闰年还是平年；
				if (year % 400 !== 0 && year % 4 == 0) {
					//说明是平年
					if (day > 28) {
						console.log("该年是平年，只有28天");
						return false;
					} else {
						if (day > 29) {
							console.log("该年是润年，只有29天");
							return false;
						}
					}
				}
			}
		}
		if (!flag) {
			return true;
		} else {
			//统一为大写
			return Card.toUpperCase();
		}

	},
	// 获取年月日周几
	formatter(date) {
		var current_time = {
			yy: "",
			mm: "",
			dd: "",
			week: "",
			date: "",
		};
		let myDate = new Date(date)
		let wk = myDate.getDay()
		let yy = String(myDate.getFullYear())
		let mm = String((myDate.getMonth() + 1) < 10 ? '0' + (myDate.getMonth() + 1) : (myDate.getMonth() + 1))
		let dd = String(myDate.getDate() < 10 ? '0' + myDate.getDate() : myDate.getDate())
		let hou = String(myDate.getHours() < 10 ? '0' + myDate.getHours() : myDate.getHours())
		let min = String(myDate.getMinutes() < 10 ? '0' + myDate.getMinutes() : myDate.getMinutes())
		let sec = String(myDate.getSeconds() < 10 ? '0' + myDate.getSeconds() : myDate.getSeconds())
		let weeks = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
		let week = weeks[wk]
		current_time.yy = yy;
		current_time.mm = mm;
		current_time.dd = dd;
		current_time.week = week;
		current_time.date = yy + "-" + mm + "-" + dd;
		return current_time
	},
	// 获取某一天最近几天的年月日
	getCurrentWeek(date, num) {

		// 创建一个空数组来存储日期
		let dates = [];

		// 获取当前日期
		let now = new Date(date);

		// 循环获取最近 7 天的日期
		for (let i = 0; i < num; i++) {
			// 获取当前日期的时间戳
			let timestamp = now.getTime();

			// 计算 i 天前的时间戳
			let dayTimestamp = 24 * 60 * 60 * 1000; // 一天的毫秒数
			let iDayAgoTimestamp = timestamp + i * dayTimestamp;

			// 转换为日期对象
			let date = new Date(iDayAgoTimestamp);

			// 格式化日期为 "yyyy-MM-dd" 的字符串并存入数组
			let year = date.getFullYear();
			let month = ("0" + (date.getMonth() + 1)).slice(-2);
			let day = ("0" + date.getDate()).slice(-2);
			dates.push(year + "-" + month + "-" + day);
		}

		return dates
	}
}
export default Calculate
